package com.util;

import java.util.Map;

import org.apache.commons.lang.StringUtils;

/**
 * Map操作工具类
 * 
 * @author JINJF
 *
 */
public class MapUtils {
    /**
     * 判断Map是否为空
     * 
     * @param m
     * @return
     */
    public static boolean isEmpty(Map<?, ?> m) {
        return m == null || m.isEmpty();
    }

    /**
     * 判断Map是否不为空
     * 
     * @param m
     * @return
     */
    public static boolean isNotEmpty(Map<?, ?> m) {
        return !isEmpty(m);
    }

    /**
     * 取得Map的长度
     * 
     * @param m
     * @return
     */
    public static int size(Map<?, ?> m) {
        return m != null ? m.size() : 0;
    }

    /**
     * 取得Map的值
     * 
     * @param m
     * @param key
     * @return
     */
    public static String getVal(Map<String, ?> m, String key) {
        if (isEmpty(m)) {
            return StringUtils.EMPTY;
        }
        if (m.containsKey(key)) {
            Object obj = m.get(key);
            if (obj != null) {
                return StringUtils.trimToEmpty(obj.toString());
            }
        }
        return StringUtils.EMPTY;
    }

    /**
     * 是否存在值
     * 
     * @param m
     * @param val
     * @return
     */
    public static boolean containsVal(Map<String, String> m, String val) {
        if (isEmpty(m)) {
            return false;
        }

        for (Map.Entry<String, String> item : m.entrySet()) {
            if (StringUtils.equalsIgnoreCase(val, item.getValue())) {
                return true;
            }
        }

        return false;
    }

    /**
     * 根据VALUE 获取值
     * 
     * @param m
     * @param val
     * @return
     */
    public static String getKeyByVal(Map<String, String> m, String val) {
        if (isEmpty(m)) {
            return StringUtils.EMPTY;
        }

        for (Map.Entry<String, String> item : m.entrySet()) {
            if (StringUtils.equalsIgnoreCase(val, item.getValue())) {
                return item.getKey();
            }
        }

        return StringUtils.EMPTY;
    }
}
